Міністерство освіти і науки України
Національний університет “Львівська політехніка”
/
Звіт
До Лабораторної роботи №5
З дисципліни: «Кросплатформені засоби програмування»
Мета: оволодіти навиками використання механізму виключень при написанні програм мовою Java.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Виключення – це механізм мови Java, що забезпечує негайну передачу керування блоку коду опрацювання критичних помилок при їх виникненні уникаючи процесу розкручування стеку. Генерація виключень застосовується при:
помилках введення, наприклад, при введенні назви неіснуючого файлу або Інтернет адреси з подальшим зверненням до цих ресурсів, що призводить до генерації помилки системним програмним забезпеченням;
збоях обладнання;
помилках, що пов’язані з фізичними обмеженнями комп’ютерної системи, наприклад, при заповненні оперативної пам’яті або жорсткого диску;
помилках програмування, наприклад, при некоректній роботі методу, читанні елементів порожнього стеку, виходу за межі масиву тощо.
Ієрархія класів виключень
Всі виключення в мові Java поділяються на контрольовані і неконтрольовані та спадкуються від суперкласу Throwable. Безпосередньо від цього суперкласу спадкуються 2 класи Error і Exception (див. рис. 1).
Ієрархія класів, що спадкує клас Error, описує внутрішні помилки і ситуації, що пов’язані з браком ресурсів у системі підтримки виконання програм. Жоден об’єкт цього типу самостійно згенерувати неможна. При виникненні внутрішньої помилки можна лише відобразити повідомлення користувачу та спробувати коректно завершити виконання програми. Такі помилки є нечастими.
Ієрархія класів, що спадкує клас Exception поділяється на клас RuntimeException та інші. Виключення типу RuntimeException виникають внаслідок помилок програмування. Всі інші помилки є наслідком непередбачених подій, що виникають під час виконання коректної програми, наприклад, помилок вводу/виводу.
Класи, що спадкуються від Error та RuntimeException, відносяться до неконтрольованих виключень. Всі інші класи відносяться до контрольованих виключень. Лише контрольовані виключення можуть бути згенеровані програмістом у коді програми явно за допомогою ключового слова throw. Для всіх контрольованих виключень компілятор перевіряє наявність відповідних обробників.
Error
Exception
Інші Інші
Неконтрольовані виключення Контрольовані виключення
Рис. 1. Ієрархія класів виключень.
Створення власних класів виключень
Інші
Як правило, власні класи контрольованих виключень використовуються для конкретизації виключних ситуацій, що генеруються стандартними класами контрольованих виключень, з метою їх точнішого опрацювання. Для створення власного класу контрольованих виключень необхідно обов’язково успадкувати один з існуючих класів контрольованих виключень та розширити його новою функціональністю. Найчастіше власні класи оснащують конструктором по замовчуванню та конструктором, що приймає детальний опис ситуації, яка призвела до генерації виключення. Для відображення опису помилкової ситуації можна використати метод toString() класу Throwable. Для цього необхідно викликати відповідний конструктор класу, що розширяється. Після цього створений клас можна застосовувати для генерації виключень.
Приклад власного класу виключень:
class FileFormatException extends IOException
{
public FileFormatException()
{}
public FileFormatException(String message)
{
/*
Даний виклик конструктора суперкласу дозволяє використовувати метод toString() класу Throwable
*/ super(message);
}
}
Оголошення контрольованих виключень
Виключення можуть генеруватися лише методами. Якщо метод може генерувати виключення певного класу, то назву цього класу слід вказати в заголовку методу після
ключового слова throws. Якщо метод може генерувати кілька видів виключень, то всі вони перелічуються через кому.
Приклад оголошення методу, що може генерувати виключення:
public int loadData(String fName) throws EOFException, MalformedURLException
{
…
}
Слід зауважити, що оголошення всіх можливих виключе...